package com.itheima.config;

import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;

import java.time.LocalDateTime;

@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
//    在同一个线程内，获取共享变量，因为insertFil(MetaObject metaObject)没有
//   办法传进去从session中获取的当前登录用户ID
//    公共字段设置

    @Override
    public void insertFill(MetaObject metaObject) {
        System.out.println("fill thread id" + Thread.currentThread().getId());
//        metaObject.setVale("","");
        metaObject.setValue("createUser",BaseContext.getCurrentId());
        metaObject.setValue("updateUser",BaseContext.getCurrentId());
        metaObject.setValue("createTime", LocalDateTime.now());
        metaObject.setValue("updateUser",LocalDateTime.now());
//        之后当前登录用户ID使用完
        BaseContext.remove();
//        threadLocal的使用，用来做同一个线程内，共享变量，可以在过滤器一直到dao，各层去使用
//        共享变量，注意：threadLocal中存储的变量使用后一定记住手动remove掉
    }

    @Override
    public void updateFill(MetaObject metaObject) {
        metaObject.setValue("updateUser",BaseContext.getCurrentId());
        metaObject.setValue("createTime", LocalDateTime.now());
        BaseContext.remove();
    }
}
